<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>OL-Cesium API Documentation - Source: src/abstractsynchronizer.js</title>
    <script src="scripts/prettify/prettify.js"> </script>
    <script src="scripts/prettify/lang-css.js"> </script>
    <script src="scripts/jquery.min.js"> </script>
    <!--[if lt IE 9]>
      <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->
    <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
    <link type="text/css" rel="stylesheet" href="styles/bootstrap.min.css">
    <link type="text/css" rel="stylesheet" href="styles/jaguar.css">
</head>
<body>
<div id="wrap" class="clearfix">
    
<div class="navigation">
    <h3 class="applicationName"><a href="index.html">OL-Cesium</a></h3>
    <div class="search">
        <input id="search" type="text" class="form-control input-sm" placeholder="Search Documentation">
    </div>
    <ul class="list">
    
        <li class="item" data-name="olcs.AbstractSynchronizer">
            <span class="title">
                <a href="olcs.AbstractSynchronizer.html">olcs.AbstractSynchronizer</a>
                
            </span>
            <ul class="members itemMembers">
            
            </ul>
            <ul class="typedefs itemMembers">
            
            </ul>
            <ul class="methods itemMembers">
            
            <span class="subtitle">Methods</span>
            
                <li data-name="olcs.AbstractSynchronizer#synchronize" class="unstable">
                    <a href="olcs.AbstractSynchronizer.html#synchronize">synchronize</a>
                </li>
            
            </ul>
            <ul class="fires itemMembers">
            
            </ul>
        </li>
    
        <li class="item" data-name="olcs.AutoRenderLoop">
            <span class="title">
                <a href="olcs.AutoRenderLoop.html">olcs.AutoRenderLoop</a>
                
            </span>
            <ul class="members itemMembers">
            
            </ul>
            <ul class="typedefs itemMembers">
            
            </ul>
            <ul class="methods itemMembers">
            
            <span class="subtitle">Methods</span>
            
                <li data-name="olcs.AutoRenderLoop#restartRenderLoop" class="unstable">
                    <a href="olcs.AutoRenderLoop.html#restartRenderLoop">restartRenderLoop</a>
                </li>
            
                <li data-name="olcs.AutoRenderLoop#setDebug" class="unstable">
                    <a href="olcs.AutoRenderLoop.html#setDebug">setDebug</a>
                </li>
            
            </ul>
            <ul class="fires itemMembers">
            
            </ul>
        </li>
    
        <li class="item" data-name="olcs.Camera">
            <span class="title">
                <a href="olcs.Camera.html">olcs.Camera</a>
                
            </span>
            <ul class="members itemMembers">
            
            </ul>
            <ul class="typedefs itemMembers">
            
            </ul>
            <ul class="methods itemMembers">
            
            <span class="subtitle">Methods</span>
            
                <li data-name="olcs.Camera#getAltitude" class="unstable">
                    <a href="olcs.Camera.html#getAltitude">getAltitude</a>
                </li>
            
                <li data-name="olcs.Camera#getCenter" class="unstable">
                    <a href="olcs.Camera.html#getCenter">getCenter</a>
                </li>
            
                <li data-name="olcs.Camera#getDistance" class="unstable">
                    <a href="olcs.Camera.html#getDistance">getDistance</a>
                </li>
            
                <li data-name="olcs.Camera#getHeading" class="unstable">
                    <a href="olcs.Camera.html#getHeading">getHeading</a>
                </li>
            
                <li data-name="olcs.Camera#getPosition" class="unstable">
                    <a href="olcs.Camera.html#getPosition">getPosition</a>
                </li>
            
                <li data-name="olcs.Camera#getTilt" class="unstable">
                    <a href="olcs.Camera.html#getTilt">getTilt</a>
                </li>
            
                <li data-name="olcs.Camera#lookAt" class="unstable">
                    <a href="olcs.Camera.html#lookAt">lookAt</a>
                </li>
            
                <li data-name="olcs.Camera#readFromView" class="unstable">
                    <a href="olcs.Camera.html#readFromView">readFromView</a>
                </li>
            
                <li data-name="olcs.Camera#setAltitude" class="unstable">
                    <a href="olcs.Camera.html#setAltitude">setAltitude</a>
                </li>
            
                <li data-name="olcs.Camera#setCenter" class="unstable">
                    <a href="olcs.Camera.html#setCenter">setCenter</a>
                </li>
            
                <li data-name="olcs.Camera#setDistance" class="unstable">
                    <a href="olcs.Camera.html#setDistance">setDistance</a>
                </li>
            
                <li data-name="olcs.Camera#setHeading" class="unstable">
                    <a href="olcs.Camera.html#setHeading">setHeading</a>
                </li>
            
                <li data-name="olcs.Camera#setPosition" class="unstable">
                    <a href="olcs.Camera.html#setPosition">setPosition</a>
                </li>
            
                <li data-name="olcs.Camera#setTilt" class="unstable">
                    <a href="olcs.Camera.html#setTilt">setTilt</a>
                </li>
            
                <li data-name="olcs.Camera#updateView" class="unstable">
                    <a href="olcs.Camera.html#updateView">updateView</a>
                </li>
            
            </ul>
            <ul class="fires itemMembers">
            
            </ul>
        </li>
    
        <li class="item" data-name="olcs.FeatureConverter">
            <span class="title">
                <a href="olcs.FeatureConverter.html">olcs.FeatureConverter</a>
                
            </span>
            <ul class="members itemMembers">
            
            </ul>
            <ul class="typedefs itemMembers">
            
            </ul>
            <ul class="methods itemMembers">
            
            <span class="subtitle">Methods</span>
            
                <li data-name="olcs.FeatureConverter#computePlainStyle" class="unstable">
                    <a href="olcs.FeatureConverter.html#computePlainStyle">computePlainStyle</a>
                </li>
            
                <li data-name="olcs.FeatureConverter#convert" class="unstable">
                    <a href="olcs.FeatureConverter.html#convert">convert</a>
                </li>
            
                <li data-name="olcs.FeatureConverter#csAddBillboard" class="unstable">
                    <a href="olcs.FeatureConverter.html#csAddBillboard">csAddBillboard</a>
                </li>
            
                <li data-name="olcs.FeatureConverter#getHeightReference" class="unstable">
                    <a href="olcs.FeatureConverter.html#getHeightReference">getHeightReference</a>
                </li>
            
                <li data-name="olcs.FeatureConverter#olCircleGeometryToCesium" class="unstable">
                    <a href="olcs.FeatureConverter.html#olCircleGeometryToCesium">olCircleGeometryToCesium</a>
                </li>
            
                <li data-name="olcs.FeatureConverter#olFeatureToCesium" class="unstable">
                    <a href="olcs.FeatureConverter.html#olFeatureToCesium">olFeatureToCesium</a>
                </li>
            
                <li data-name="olcs.FeatureConverter#olGeometry4326TextPartToCesium" class="unstable">
                    <a href="olcs.FeatureConverter.html#olGeometry4326TextPartToCesium">olGeometry4326TextPartToCesium</a>
                </li>
            
                <li data-name="olcs.FeatureConverter#olLineStringGeometryToCesium" class="unstable">
                    <a href="olcs.FeatureConverter.html#olLineStringGeometryToCesium">olLineStringGeometryToCesium</a>
                </li>
            
                <li data-name="olcs.FeatureConverter#olMultiGeometryToCesium" class="unstable">
                    <a href="olcs.FeatureConverter.html#olMultiGeometryToCesium">olMultiGeometryToCesium</a>
                </li>
            
                <li data-name="olcs.FeatureConverter#olPointGeometryToCesium" class="unstable">
                    <a href="olcs.FeatureConverter.html#olPointGeometryToCesium">olPointGeometryToCesium</a>
                </li>
            
                <li data-name="olcs.FeatureConverter#olPolygonGeometryToCesium" class="unstable">
                    <a href="olcs.FeatureConverter.html#olPolygonGeometryToCesium">olPolygonGeometryToCesium</a>
                </li>
            
                <li data-name="olcs.FeatureConverter#olStyleToCesium" class="unstable">
                    <a href="olcs.FeatureConverter.html#olStyleToCesium">olStyleToCesium</a>
                </li>
            
                <li data-name="olcs.FeatureConverter#olVectorLayerToCesium" class="unstable">
                    <a href="olcs.FeatureConverter.html#olVectorLayerToCesium">olVectorLayerToCesium</a>
                </li>
            
            </ul>
            <ul class="fires itemMembers">
            
            </ul>
        </li>
    
        <li class="item" data-name="olcs.OLCesium">
            <span class="title">
                <a href="olcs.OLCesium.html">olcs.OLCesium</a>
                
            </span>
            <ul class="members itemMembers">
            
            </ul>
            <ul class="typedefs itemMembers">
            
            </ul>
            <ul class="methods itemMembers">
            
            <span class="subtitle">Methods</span>
            
                <li data-name="olcs.OLCesium#enableAutoRenderLoop" class="unstable">
                    <a href="olcs.OLCesium.html#enableAutoRenderLoop">enableAutoRenderLoop</a>
                </li>
            
                <li data-name="olcs.OLCesium#getAutoRenderLoop" class="unstable">
                    <a href="olcs.OLCesium.html#getAutoRenderLoop">getAutoRenderLoop</a>
                </li>
            
                <li data-name="olcs.OLCesium#getCamera" class="unstable">
                    <a href="olcs.OLCesium.html#getCamera">getCamera</a>
                </li>
            
                <li data-name="olcs.OLCesium#getCesiumScene" class="unstable">
                    <a href="olcs.OLCesium.html#getCesiumScene">getCesiumScene</a>
                </li>
            
                <li data-name="olcs.OLCesium#getDataSourceDisplay" class="unstable">
                    <a href="olcs.OLCesium.html#getDataSourceDisplay">getDataSourceDisplay</a>
                </li>
            
                <li data-name="olcs.OLCesium#getDataSources" class="unstable">
                    <a href="olcs.OLCesium.html#getDataSources">getDataSources</a>
                </li>
            
                <li data-name="olcs.OLCesium#getEnabled" class="unstable">
                    <a href="olcs.OLCesium.html#getEnabled">getEnabled</a>
                </li>
            
                <li data-name="olcs.OLCesium#getOlMap" class="unstable">
                    <a href="olcs.OLCesium.html#getOlMap">getOlMap</a>
                </li>
            
                <li data-name="olcs.OLCesium#setBlockCesiumRendering" class="unstable">
                    <a href="olcs.OLCesium.html#setBlockCesiumRendering">setBlockCesiumRendering</a>
                </li>
            
                <li data-name="olcs.OLCesium#setEnabled" class="unstable">
                    <a href="olcs.OLCesium.html#setEnabled">setEnabled</a>
                </li>
            
                <li data-name="olcs.OLCesium#setResolutionScale" class="unstable">
                    <a href="olcs.OLCesium.html#setResolutionScale">setResolutionScale</a>
                </li>
            
                <li data-name="olcs.OLCesium#setTargetFrameRate" class="unstable">
                    <a href="olcs.OLCesium.html#setTargetFrameRate">setTargetFrameRate</a>
                </li>
            
                <li data-name="olcs.OLCesium#warmUp" class="unstable">
                    <a href="olcs.OLCesium.html#warmUp">warmUp</a>
                </li>
            
            </ul>
            <ul class="fires itemMembers">
            
            </ul>
        </li>
    
        <li class="item" data-name="olcs.RasterSynchronizer">
            <span class="title">
                <a href="olcs.RasterSynchronizer.html">olcs.RasterSynchronizer</a>
                
            </span>
            <ul class="members itemMembers">
            
            </ul>
            <ul class="typedefs itemMembers">
            
            </ul>
            <ul class="methods itemMembers">
            
            </ul>
            <ul class="fires itemMembers">
            
            </ul>
        </li>
    
        <li class="item" data-name="olcs.VectorSynchronizer">
            <span class="title">
                <a href="olcs.VectorSynchronizer.html">olcs.VectorSynchronizer</a>
                
            </span>
            <ul class="members itemMembers">
            
            </ul>
            <ul class="typedefs itemMembers">
            
            </ul>
            <ul class="methods itemMembers">
            
            </ul>
            <ul class="fires itemMembers">
            
            </ul>
        </li>
    
        <li class="item" data-name="olcs.core">
            <span class="title">
                <a href="olcs.core.html">olcs.core</a>
                
                
            </span>
            <ul class="members itemMembers">
            
            </ul>
            <ul class="typedefs itemMembers">
            
            </ul>
            <ul class="methods itemMembers">
            
            <span class="subtitle">Methods</span>
            
                <li data-name="olcs.core.applyHeightOffsetToGeometry" class="unstable">
                    <a href="olcs.core.html#.applyHeightOffsetToGeometry">applyHeightOffsetToGeometry</a>
                </li>
            
                <li data-name="olcs.core.computeAngleToZenith" class="unstable">
                    <a href="olcs.core.html#.computeAngleToZenith">computeAngleToZenith</a>
                </li>
            
                <li data-name="olcs.core.computePixelSizeAtCoordinate" class="unstable">
                    <a href="olcs.core.html#.computePixelSizeAtCoordinate">computePixelSizeAtCoordinate</a>
                </li>
            
                <li data-name="olcs.core.computeSignedTiltAngleOnGlobe" class="unstable">
                    <a href="olcs.core.html#.computeSignedTiltAngleOnGlobe">computeSignedTiltAngleOnGlobe</a>
                </li>
            
                <li data-name="olcs.core.convertColorToCesium" class="unstable">
                    <a href="olcs.core.html#.convertColorToCesium">convertColorToCesium</a>
                </li>
            
                <li data-name="olcs.core.convertUrlToCesium" class="unstable">
                    <a href="olcs.core.html#.convertUrlToCesium">convertUrlToCesium</a>
                </li>
            
                <li data-name="olcs.core.extentToRectangle" class="unstable">
                    <a href="olcs.core.html#.extentToRectangle">extentToRectangle</a>
                </li>
            
                <li data-name="olcs.core.lookAt" class="unstable">
                    <a href="olcs.core.html#.lookAt">lookAt</a>
                </li>
            
                <li data-name="olcs.core.ol4326CoordinateArrayToCsCartesians" class="unstable">
                    <a href="olcs.core.html#.ol4326CoordinateArrayToCsCartesians">ol4326CoordinateArrayToCsCartesians</a>
                </li>
            
                <li data-name="olcs.core.ol4326CoordinateToCesiumCartesian" class="unstable">
                    <a href="olcs.core.html#.ol4326CoordinateToCesiumCartesian">ol4326CoordinateToCesiumCartesian</a>
                </li>
            
                <li data-name="olcs.core.olGeometryCloneTo4326" class="unstable">
                    <a href="olcs.core.html#.olGeometryCloneTo4326">olGeometryCloneTo4326</a>
                </li>
            
                <li data-name="olcs.core.pickBottomPoint" class="unstable">
                    <a href="olcs.core.html#.pickBottomPoint">pickBottomPoint</a>
                </li>
            
                <li data-name="olcs.core.pickCenterPoint" class="unstable">
                    <a href="olcs.core.html#.pickCenterPoint">pickCenterPoint</a>
                </li>
            
                <li data-name="olcs.core.pickOnTerrainOrEllipsoid" class="unstable">
                    <a href="olcs.core.html#.pickOnTerrainOrEllipsoid">pickOnTerrainOrEllipsoid</a>
                </li>
            
                <li data-name="olcs.core.rotateAroundAxis" class="unstable">
                    <a href="olcs.core.html#.rotateAroundAxis">rotateAroundAxis</a>
                </li>
            
                <li data-name="olcs.core.setHeadingUsingBottomCenter" class="unstable">
                    <a href="olcs.core.html#.setHeadingUsingBottomCenter">setHeadingUsingBottomCenter</a>
                </li>
            
                <li data-name="olcs.core.tileLayerToImageryLayer" class="unstable">
                    <a href="olcs.core.html#.tileLayerToImageryLayer">tileLayerToImageryLayer</a>
                </li>
            
                <li data-name="olcs.core.updateCesiumLayerProperties" class="unstable">
                    <a href="olcs.core.html#.updateCesiumLayerProperties">updateCesiumLayerProperties</a>
                </li>
            
            </ul>
            <ul class="fires itemMembers">
            
            </ul>
        </li>
    
    </ul>
</div>
    <div class="main">
        <h1 class="page-title" data-filename="src_abstractsynchronizer.js.html">Source: src/abstractsynchronizer.js</h1>
        


    
    <section>
        <article>
            <pre class="prettyprint source"><code>goog.provide('olcs.AbstractSynchronizer');

goog.require('goog.asserts');

goog.require('ol');
goog.require('ol.Observable');
goog.require('ol.events');
goog.require('ol.layer.Group');



/**
 * @param {!ol.Map} map
 * @param {!Cesium.Scene} scene
 * @constructor
 * @template T
 * @struct
 * @abstract
 * @api
 */
olcs.AbstractSynchronizer = function(map, scene) {
  /**
   * @type {!ol.Map}
   * @protected
   */
  this.map = map;

  /**
   * @type {ol.View}
   * @protected
   */
  this.view = map.getView();

  /**
   * @type {!Cesium.Scene}
   * @protected
   */
  this.scene = scene;

  /**
   * @type {ol.Collection.&lt;ol.layer.Base>}
   * @protected
   */
  this.olLayers = map.getLayerGroup().getLayers();

  /**
   * @type {ol.layer.Group}
   */
  this.mapLayerGroup = map.getLayerGroup();

  /**
   * Map of OpenLayers layer ids (from ol.getUid) to the Cesium ImageryLayers.
   * Null value means, that we are unable to create equivalent layers.
   * @type {Object.&lt;string, ?Array.&lt;T>>}
   * @protected
   */
  this.layerMap = {};

  /**
   * Map of listen keys for OpenLayers layer layers ids (from ol.getUid).
   * @type {!Object.&lt;string, Array&lt;ol.EventsKey>>}
   * @protected
   */
  this.olLayerListenKeys = {};

  /**
   * Map of listen keys for OpenLayers layer groups ids (from ol.getUid).
   * @type {!Object.&lt;string, !Array.&lt;ol.EventsKey>>}
   * @private
   */
  this.olGroupListenKeys_ = {};
};


/**
 * Destroy all and perform complete synchronization of the layers.
 * @api
 */
olcs.AbstractSynchronizer.prototype.synchronize = function() {
  this.destroyAll();
  this.addLayers_(this.mapLayerGroup);
};


/**
 * Order counterparts using the same algorithm as the Openlayers renderer:
 * z-index then original sequence order.
 * @protected
 */
olcs.AbstractSynchronizer.prototype.orderLayers = function() {
  // Ordering logics is handled in subclasses.
};


/**
 * Add a layer hierarchy.
 * @param {ol.layer.Base} root
 * @private
 */
olcs.AbstractSynchronizer.prototype.addLayers_ = function(root) {
  /** @type {Array.&lt;!ol.layer.Base>} */
  const fifo = [root];
  while (fifo.length > 0) {
    const olLayer = fifo.splice(0, 1)[0];
    const olLayerId = ol.getUid(olLayer).toString();
    this.olLayerListenKeys[olLayerId] = [];
    goog.asserts.assert(!this.layerMap[olLayerId]);

    let cesiumObjects = null;
    if (olLayer instanceof ol.layer.Group) {
      this.listenForGroupChanges_(olLayer);
      cesiumObjects = this.createSingleLayerCounterparts(olLayer);
      if (!cesiumObjects) {
        olLayer.getLayers().forEach((l) => {
          if (l) {
            fifo.push(l);
          }
        });
      }
    } else {
      cesiumObjects = this.createSingleLayerCounterparts(olLayer);
    }

    // add Cesium layers
    if (cesiumObjects) {
      this.layerMap[olLayerId] = cesiumObjects;
      this.olLayerListenKeys[olLayerId].push(ol.events.listen(olLayer,
          'change:zIndex', this.orderLayers, this));
      cesiumObjects.forEach(function(cesiumObject) {
        this.addCesiumObject(cesiumObject);
      }, this);
    }
  }

  this.orderLayers();
};


/**
 * Remove and destroy a single layer.
 * @param {ol.layer.Layer} layer
 * @return {boolean} counterpart destroyed
 * @private
 */
olcs.AbstractSynchronizer.prototype.removeAndDestroySingleLayer_ = function(layer) {
  const uid = ol.getUid(layer).toString();
  const counterparts = this.layerMap[uid];
  if (!!counterparts) {
    counterparts.forEach(function(counterpart) {
      this.removeSingleCesiumObject(counterpart, false);
      this.destroyCesiumObject(counterpart);
    }, this);
    this.olLayerListenKeys[uid].forEach(ol.Observable.unByKey);
    delete this.olLayerListenKeys[uid];
  }
  delete this.layerMap[uid];
  return !!counterparts;
};


/**
 * Unlisten a single layer group.
 * @param {ol.layer.Group} group
 * @private
 */
olcs.AbstractSynchronizer.prototype.unlistenSingleGroup_ = function(group) {
  if (group === this.mapLayerGroup) {
    return;
  }
  const uid = ol.getUid(group).toString();
  const keys = this.olGroupListenKeys_[uid];
  keys.forEach((key) => {
    ol.Observable.unByKey(key);
  });
  delete this.olGroupListenKeys_[uid];
  delete this.layerMap[uid];
};


/**
 * Remove layer hierarchy.
 * @param {ol.layer.Base} root
 * @private
 */
olcs.AbstractSynchronizer.prototype.removeLayer_ = function(root) {
  if (!!root) {
    const fifo = [root];
    while (fifo.length > 0) {
      const olLayer = fifo.splice(0, 1)[0];
      const done = this.removeAndDestroySingleLayer_(olLayer);
      if (olLayer instanceof ol.layer.Group) {
        this.unlistenSingleGroup_(olLayer);
        if (!done) {
          // No counterpart for the group itself so removing
          // each of the child layers.
          olLayer.getLayers().forEach((l) => {
            fifo.push(l);
          });
        }
      }
    }
  }
};


/**
 * Register listeners for single layer group change.
 * @param {ol.layer.Group} group
 * @private
 */
olcs.AbstractSynchronizer.prototype.listenForGroupChanges_ = function(group) {
  const uuid = ol.getUid(group).toString();

  goog.asserts.assert(this.olGroupListenKeys_[uuid] === undefined);

  const listenKeyArray = [];
  this.olGroupListenKeys_[uuid] = listenKeyArray;

  // only the keys that need to be relistened when collection changes
  let contentKeys = [];
  const listenAddRemove = (function() {
    const collection = group.getLayers();
    if (collection) {
      contentKeys = [
        collection.on('add', function(event) {
          this.addLayers_(event.element);
        }, this),
        collection.on('remove', function(event) {
          this.removeLayer_(event.element);
        }, this)
      ];
      listenKeyArray.push(...contentKeys);
    }
  }).bind(this);

  listenAddRemove();

  listenKeyArray.push(group.on('change:layers', (e) => {
    contentKeys.forEach((el) => {
      const i = listenKeyArray.indexOf(el);
      if (i >= 0) {
        listenKeyArray.splice(i, 1);
      }
      ol.Observable.unByKey(el);
    });
    listenAddRemove();
  }));
};


/**
 * Destroys all the created Cesium objects.
 * @protected
 */
olcs.AbstractSynchronizer.prototype.destroyAll = function() {
  this.removeAllCesiumObjects(true); // destroy
  let objKey;
  for (objKey in this.olGroupListenKeys_) {
    const keys = this.olGroupListenKeys_[objKey];
    keys.forEach(ol.Observable.unByKey);
  }
  for (objKey in this.olLayerListenKeys) {
    this.olLayerListenKeys[objKey].forEach(ol.Observable.unByKey);
  }
  this.olGroupListenKeys_ = {};
  this.olLayerListenKeys = {};
  this.layerMap = {};
};


/**
 * Adds a single Cesium object to the collection.
 * @param {!T} object
 * @abstract
 * @protected
 */
olcs.AbstractSynchronizer.prototype.addCesiumObject = function(object) {};


/**
 * @param {!T} object
 * @abstract
 * @protected
 */
olcs.AbstractSynchronizer.prototype.destroyCesiumObject = function(object) {};


/**
 * Remove single Cesium object from the collection.
 * @param {!T} object
 * @param {boolean} destroy
 * @abstract
 * @protected
 */
olcs.AbstractSynchronizer.prototype.removeSingleCesiumObject = function(object, destroy) {};


/**
 * Remove all Cesium objects from the collection.
 * @param {boolean} destroy
 * @abstract
 * @protected
 */
olcs.AbstractSynchronizer.prototype.removeAllCesiumObjects = function(destroy) {};


/**
 * @param {!ol.layer.Base} olLayer
 * @return {?Array.&lt;T>}
 * @abstract
 * @protected
 */
olcs.AbstractSynchronizer.prototype.createSingleLayerCounterparts = function(olLayer) {};
</code></pre>
        </article>
    </section>





        <footer>
            Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.4</a> on Wed Sep 06 2017 08:16:39 GMT+0200 (CEST)
        </footer>
    </div>
</div>
<script>prettyPrint();</script>
<script src="scripts/linenumber.js"></script>
<script src="scripts/main.js"></script>
</body>
</html>
